Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <opencv2\opencv.hpp>
- int main(){
- cv::Mat kernel = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(35,35));
- //Wczytujemy obraz w kolorze i konwertujemy go na odcien szarosci
- cv::Mat imgColor = cv::imread("rezystor.jpg"), img, tmp1,tmp2;
- cv::cvtColor(imgColor,img,cv::COLOR_RGB2GRAY);
- //zapisujemy obraz przed
- cv::imwrite( "beforeOperations.jpg", img );
- cv::namedWindow("mainWindow");
- //cv::namedWindow("originalWindow");
- //cv::Rect cropArea(2000,1200,1500,1000);
- //cv::Mat imgCrop = img(cropArea);
- //progujemy
- cv::threshold(img,img,100,255,CV_THRESH_BINARY);
- //cv::adaptiveThreshold(img,img,255,cv::ADAPTIVE_THRESH_GAUSSIAN_C,CV_THRESH_BINARY,11,2);
- //usuwamy nozki rezystora
- cv::dilate(img,img,kernel);
- cv::erode(img,img,kernel);
- cv:: Mat imgGray;
- img.copyTo(imgGray);
- cv::threshold(img,img,100,255,CV_THRESH_BINARY_INV);
- std::vector<std::vector<cv::Point>> contour;
- cv::findContours(img,contour,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE);
- cv::RotatedRect rr=cv::minAreaRect(contour[0]);
- cv::Point2f points[4];
- rr.points(points);
- cv::Size s;
- cv::Mat transform;
- cv::Scalar c[4]={cv::Scalar(255,0,0), cv::Scalar(0,255,0), cv::Scalar(0,0,255), cv::Scalar(255,255,0)};
- //for(int i=0;i<4;++i) cv::circle(imgColor,points[i],10,c[i]);
- //cv::namedWindow("Test1",0);
- //cv::imshow("Test1",imgColor);
- //cv::waitKey();
- if(rr.size.width>rr.size.height)
- {
- cv::Point2f oPoints[]={cv::Point2f(0,0),
- cv::Point2f(rr.size.height,0),
- cv::Point2f(rr.size.height, rr.size.width)};
- s=cv::Size(rr.size.height,rr.size.width);
- transform=cv::getAffineTransform(points, oPoints);
- }
- else{
- cv::Point2f oPoints[]={cv::Point2f(0,rr.size.height),
- cv::Point2f(0,0),
- cv::Point2f(rr.size.width,0)};
- s=rr.size;
- transform=cv::getAffineTransform(points, oPoints);
- }
- cv::Mat imgOut;
- cv::warpAffine(imgColor,imgOut,transform,s);
- cv::imwrite("rezystorCut.jpg", imgOut);
- cv::imshow("mainWindow",imgOut);
- cv::moveWindow("mainWindow",500,200);
- cv::waitKey();
- cv::Mat colImg=imgOut.col(0).clone();
- colImg=0;
- for(int y=0;y<imgOut.rows;++y)
- {
- for(int x=0;x<img.cols;++x)
- {
- //jesli nie tlo
- //wyliczyc srednia
- }
- }
- //imgbw
- /*
- cv::Mat rowbw=img.row(18);
- for(int x=0;x<rowbw.cols-1;++x)
- {
- if(rowbw.data[x]<128 && rowbw.data[x+1]>128)
- {
- }
- }
- */
- //cv::imwrite("imgGray.jpg",imgColor);
- //cv::imshow("originalWindow",imgColor);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement