4/21 這一天為小一的學期的期中考, 所以今天(3/21)幫茗禾找一些考古題來練習 準備讓小朋友自己安排時間, 上網google一找, 可以下載一堆試題題庫 此外, 自己翻一翻內容,

me1237guy 發表在 痞客邦 留言(0) 人氣()

image
以下是參考官方文件[1] Image Segmentation with Distance Transform and Watershed Algorithm並將其範例封裝成C++ DLL, 由C# UI進行各項參數試驗c++ImageProc.h
#include <wchar.h>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#pragma once
 
using namespace std;
using namespace cv;
 
namespace CVision
{
 public ref class ImageProc
 {
 
 public:
 ImageProc(){};
 bool imread(wchar_t *filename);
 bool imshow();
 void changeBGBlack();
 void changeBGBlack(int threshBlue, int threshGreen, int threshRed);
 void sharpImage();
 void bgr2Gray(int thresh);
 
 void distTransform();
 void extractPeaks();
 void labelMarkers();
 void applyWatershed();
 
 private:
 std::string WstringToString(const std::wstring str);
 
 };
}

me1237guy 發表在 痞客邦 留言(0) 人氣()

http://www3.ee.nihs.tp.edu.tw/plc/

me1237guy 發表在 痞客邦 留言(0) 人氣()

image
之前有寫過一篇關於OpenCV像素取/存值的方式[1]彩色像素取值image.at<cv::Vec3b>(row, col)[0]image.at<cv::Vec3b>(row, col)[1]image.at<cv::Vec3b>(row, col)[2]灰階像素取值image.at<uchar>(row, col) = 255;加上另一篇[2] 利用C# 拉UI並傳參數給OpenCV C++ DLL

me1237guy 發表在 痞客邦 留言(0) 人氣()

image
How to Create an OpenCV C++ DLL and To be Used in C# Windows Form Project?如果你跟我一樣:1. 有點厭倦使用EmguCV, 理由很簡單: 因為當你google 關鍵字OpenCV找到的範例絕大部分應該是C++為大宗, 所以你得即時翻譯成EmguCV語法, 無法享受Copy-Paste的快樂; 雖然話說習慣成自然, 但是久沒有使用, 時間是會沖淡一切….2. 當你使用 C++, 又開始懷念C#拉UI的快樂時, 你不得不考慮兩者加在一起使用….3. 綜合1.2兩點, 希望可以在C# windows form快快樂樂拉UI, 同時簡簡單單將不同參數傳給OpenCV,最重要的是可以快速複製貼上OpenCV的範例程式….哈哈!!! 4. 當OpenCV C++函式庫有變動時, 只需要編譯整個方案(solution)就可以全部一次更新完成所以接下來要寫一個簡單範例,

me1237guy 發表在 痞客邦 留言(8) 人氣()

  • Mar 10 Thu 2016 20:36
  • 借書

image

me1237guy 發表在 痞客邦 留言(0) 人氣()

image
加入現有屬性工作表 VS2010OpenCV249X64ReleaseVS2010OpenCV249X86DebugVS2010OpenCV249X86Release
#include "stdafx.h"
#include <core\core.hpp>
#include <calib3d\calib3d.hpp>
#include <highgui\highgui.hpp>
#include <imgproc\imgproc.hpp>
#include <contrib\contrib.hpp>
 
 
using namespace cv;
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
 Mat img1, img2, g1, g2;
 Mat disp, disp1, disp2;
 
 img1 = imread("tsukuba1.jpg");
 img2 = imread("tsukuba2.jpg");
 
 cvtColor(img1, g1, CV_BGR2GRAY);
 cvtColor(img2, g2, CV_BGR2GRAY);
 //-----------------------------------------------------------
 StereoBM sbm;
 sbm.state->SADWindowSize = 5;
 sbm.state->numberOfDisparities = 112;
 sbm.state->preFilterSize = 5;
 sbm.state->preFilterCap = 61;
 sbm.state->minDisparity = -39;
 sbm.state->textureThreshold = 507;
 sbm.state->uniquenessRatio = 0;
 sbm.state->speckleWindowSize = 0;
 sbm.state->speckleRange = 8;
 sbm.state->disp12MaxDiff = 1;
 
 sbm(g1, g2, disp);
 normalize(disp, disp1, 0, 255, CV_MINMAX, CV_8U);
 
 StereoSGBM sgbm;
 sgbm.SADWindowSize = 5;
 sgbm.numberOfDisparities = 192;
 sgbm.preFilterCap = 4;
 sgbm.minDisparity = -64;
 sgbm.uniquenessRatio = 1;
 sgbm.speckleWindowSize = 150;
 sgbm.speckleRange = 2;
 sgbm.disp12MaxDiff = 10;
 sgbm.fullDP = false;
 sgbm.P1 = 600;
 sgbm(g1, g2, disp);
 normalize(disp, disp2, 0, 255, CV_MINMAX, CV_8U);sgbm.P2 = 2400;
 
 imshow("left", img1);
 imshow("right", img2);
 imshow("disp1", disp1);
 imshow("disp2", disp2);
 
 cvWaitKey();
 return 0;
}

me1237guy 發表在 痞客邦 留言(0) 人氣()

image
以往我的做法是”COM”+數字(1~16)然後再去跑回圈測試可能的串列埠, snipet code like this[1]:
using System.IO.Ports;
 
private SerialPort sp;
 
for (int i = 1; i <= 16; i++)
{
 try
 {
 sp = new SerialPort("COM" + i.ToString(), baud, parity, databits, stopbits);
 sp.Open();
 if(sp.IsOpen){
 this.Label1.Text += ("COM"+i.ToString()+" is available.\n");
 }
 }
 catch (Exception) //開埠不成功就會到這來
 {
 // 執行開埠不成功的處理
 }
 finally {
 sp.Close();
 }
}

me1237guy 發表在 痞客邦 留言(0) 人氣()

image

 
#include "stdafx.h"
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <iostream>
 
using namespace std;
using namespace cv;
 
void AddNoise(Mat image, int numPts); // 加入雜訊
int _tmain(int argc, _TCHAR* argv[])
{
 char *path = "C:\\OpenCV\\images\\lena.jpg";
 Mat image;
 
 // 載入圖檔
 image = imread(path, CV_LOAD_IMAGE_COLOR);
 
 
 // 檢查讀檔是否成功
 if(! image.data )
 {
 cout << "無法開啟或找不到圖檔" << std::endl ;
 return -1;
 }
 
 
 
 namedWindow("original image", CV_WND_PROP_AUTOSIZE);
 imshow("original image", image);
 //------------------------------------- 
 int numPts = 10000;
 AddNoise(image, numPts);
 namedWindow("image with noise", CV_WND_PROP_AUTOSIZE);
 imshow("image with noise", image);
 waitKey(0);
 getchar();
 return 0;
}

me1237guy 發表在 痞客邦 留言(0) 人氣()

image
MSDN官方網頁並沒有標記5,2,15,4乍看之下, 一頭霧水後來在另一個討論主題看到其他人解釋才豁然開朗畫虛線 float[] dashValues = { 2, 2 };畫點線 float[] dashValues = { 1, 1 };畫點虛線 float[] dashValues = { 1, 2, 2, 1 };
變更字的顏色 system.Drawing.Brush

me1237guy 發表在 痞客邦 留言(0) 人氣()

image
整理之前的資料, 希望做到下列功能1. 伺服端開啟一個執行緒, 隨時提供客戶端連線2. 伺服端當偵測到客戶連線, 則啟動另一個執行緒監聽客戶端傳來的內容3. 伺服端可以隨時暫停/繼續服務, 在此同時也不能讓伺服端和客戶端程式當機4. 當伺服端暫停服務時, 客戶端會顯示”等待伺服端啟動服務…”5. 當伺服端再繼續服務時, 客戶端可以自動偵測並自動連線, 傳送資料6. 客戶端開啟一個執行緒, 並可隨時暫停/繼續傳送資料, 在此同時也不能讓伺服端和客戶端程式當機7. 當客戶端停止連線, 伺服端會顯示”等待客戶端連線…”加入新項目 TCPServerAP.cs
using System.Net; // 匯入通訊協定 
using System.Net.Sockets; // 匯入網路插座功能函數 
using System.Threading; // 匯入多執行緒功能函數
using System.Collections; // 匯入集合物件功能

me1237guy 發表在 痞客邦 留言(2) 人氣()

最近小朋友開始學習硬幣50元, 10元, 5元, 1元,幾個重點要學習:1. 79元, 給數個50元, 10元, 5元, 1元硬幣, 請湊出2種可能的組合技巧1: 讓小朋友直接操作硬幣, 對照題目練習提升興趣技巧2: 先從大單位(50元)開始湊, 如果沒有則考慮10元, 湊到十位數達到7, 也就是70 元;           最後開始湊個位數技巧3: 抽換機制: 大換小, 例如10元可以換2個5元硬幣, 這樣就可以有不同組合-----------------------------------------------------------------------------------------------會湊硬幣後, 接下來練習買一樣東西, 例如買89元, 手中已有數枚10元, 5元, 1元技巧1: 計算手中有多少錢

me1237guy 發表在 痞客邦 留言(0) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。